这个结构体用于保存鼠标消息,定义如下:
struct ExMessage{USHORT message;// 消息标识union{// 鼠标消息的数据struct{bool ctrl:1;// Ctrl 键是否按下bool shift:1;// Shift 键是否按下bool lbutton:1;// 鼠标左键是否按下bool mbutton:1;// 鼠标中键是否按下bool rbutton:1;// 鼠标右键short x;// 鼠标的 x 坐标short y;// 鼠标的 y 坐标short wheel;// 鼠标滚轮滚动值,为 120 的倍数};// 按键消息的数据struct{BYTE vkcode;// 按键的虚拟键码BYTE scancode;// 按键的扫描码(依赖于 OEM)bool extended:1;// 按键是否是扩展键bool prevdown:1;// 按键的前一个状态是否按下};// 字符消息的数据TCHAR ch;// 窗口消息的数据struct{WPARAM wParam;LPARAM lParam;};};};成员message消息标识,可为以下值:
消息标识消息类别描述WM_MOUSEMOVEEX_MOUSE鼠标移动消息。WM_MOUSEWHEELEX_MOUSE鼠标滚轮拨动消息。WM_LBUTTONDOWNEX_MOUSE左键按下消息。WM_LBUTTONUPEX_MOUSE左键弹起消息。WM_LBUTTONDBLCLKEX_MOUSE左键双击消息。WM_MBUTTONDOWNEX_MOUSE中键按下消息。WM_MBUTTONUPEX_MOUSE中键弹起消息。WM_MBUTTONDBLCLKEX_MOUSE中键双击消息。WM_RBUTTONDOWNEX_MOUSE右键按下消息。WM_RBUTTONUPEX_MOUSE右键弹起消息。WM_RBUTTONDBLCLKEX_MOUSE右键双击消息。WM_KEYDOWNEX_KEY按键按下消息WM_KEYUPEX_KEY按键弹起消息。WM_CHAREX_CHAR字符消息。WM_ACTIVATEEX_WINDOW窗口激活状态改变消息。WM_MOVEEX_WINDOW窗口移动消息。WM_SIZEEX_WINDOW窗口大小改变消息。ctrlCtrl 键是否按下。仅当消息所属类别为 EX_MOUSE 时有效。
shiftShift 键是否按下。仅当消息所属类别为 EX_MOUSE 时有效。
lbutton鼠标左键是否按下。仅当消息所属类别为 EX_MOUSE 时有效。
mbutton鼠标中键是否按下。仅当消息所属类别为 EX_MOUSE 时有效。
rbutton鼠标右键是否按下。仅当消息所属类别为 EX_MOUSE 时有效。
x当前鼠标 x 坐标(物理坐标)。仅当消息所属类别为 EX_MOUSE 时有效。
y当前鼠标 y 坐标(物理坐标)。仅当消息所属类别为 EX_MOUSE 时有效。
wheel鼠标滚轮滚动值,为 120 的倍数。仅当消息所属类别为 EX_MOUSE 时有效。
vkcode按键的虚拟键码。仅当消息所属类别为 EX_KEY 时有效。
在微软网站上列出有所有的虚拟键码:https://docs.microsoft.com/windows/win32/inputdev/virtual-key-codes
scancode按键的扫描码(依赖于 OEM)。仅当消息所属类别为 EX_KEY 时有效。
extended按键是否为扩展按键,例如功能键和数字键盘。仅当消息所属类别为 EX_KEY 时有效。
prevdown按键的前一个状态是否为按下。仅当消息所属类别为 EX_KEY 时有效。
ch收到的字符。仅当消息所属类别为 EX_CHAR 时有效。
wParam消息对应的 wParam 参数。仅当消息所属类别为 EX_WINDOW 时有效。
lParam消息对应的 lParam 参数。仅当消息所属类别为 EX_WINDOW 时有效。
示例无